package reflect;


import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class ReflectDemo6 {
    public static void main(String[] args) throws Exception {
        Class cls = Class.forName("reflect.Person");
        Method method = cls.getMethod("say", String.class, int.class);

        //获取方法的名字
        String name = method.getName();
        System.out.println(name);
        //获取方法的返回值类型
        Class returnType = method.getReturnType();
        System.out.println(returnType);
        //参数的个数
        int count = method.getParameterCount();
        System.out.println("参数的个数：" + count);
        //参数的类型
        Class[] paramTypes = method.getParameterTypes();
        for (Class paramType : paramTypes) {
            System.out.println(paramType);
        }
        //通过方法获取访问修饰符
        int modifiers = method.getModifiers();
        //访问修饰符用一个整数表示，与Modifier中的常量定义一致
        switch (modifiers) {
            case Modifier.PUBLIC:
                System.out.println("是一个公开方法");
                break;
            case Modifier.PRIVATE:
                System.out.println("是一个私有方法");
                break;
            case Modifier.PROTECTED:
                System.out.println("是一个受保护的方法");
                break;
        }
    }
}
